Nombre | Tamaño |
---|---|
Asia | 16988 |
Africa | 11506 |
North America | 9390 |
South America | 6795 |
Antarctica | 5500 |
Europe | 3745 |
Australia | 2968 |
Greenland | 840 |
New Guinea | 306 |
Borneo | 280 |
islands
Con la librería gt podemos personalizar la tabla como deseemos. A continuación podemos apreciar un ejemplo de la estructura de una tabla creada con gt
Las partes son:
Para incluir cada una de estas partes se utiliza la familia de las funciones tab_*()
.
Para agregar un encabezado a nuestra tabla usamos la función tab_header()
y así podemos incluir títulos y subtítulos de ser necesario.
Antes nuestra tabla se veía así
Nombre | Tamaño |
---|---|
Asia | 16988 |
Africa | 11506 |
North America | 9390 |
South America | 6795 |
Antarctica | 5500 |
Europe | 3745 |
Australia | 2968 |
Greenland | 840 |
New Guinea | 306 |
Borneo | 280 |
islands
Agregamos un título y un subtítulo, y Figura 2.1 se visualiza así
<-
gt_tbl1 |>
gt_tbl tab_header(
title = "Grandes masas de tierra del mundo",
subtitle = "Top 10 de las más grandes"
)
# Visualizamos la tabla
gt_tbl1
Grandes masas de tierra del mundo | |
Top 10 de las más grandes | |
Nombre | Tamaño |
---|---|
Asia | 16988 |
Africa | 11506 |
North America | 9390 |
South America | 6795 |
Antarctica | 5500 |
Europe | 3745 |
Australia | 2968 |
Greenland | 840 |
New Guinea | 306 |
Borneo | 280 |
Para personalizar nuestro libro es posible utilizar la función tab_style()
y usaremos la función de ayuda cell_text()
para, por ejemplo, cambiar el tipo de letra de toda la columna Nombre
a itálica. Para esto agregamos al código anterior:
<-
gt_tbl1 |>
gt_tbl1 tab_style(
style = cell_text(style = "italic"), # Indicamos que queremos que la letra sea itálica
locations = cells_body(
columns = Nombre # Indicamos la columna en la que se desea estilizar la letra
))
# Visualizamos la tabla
gt_tbl1
Grandes masas de tierra del mundo | |
Top 10 de las más grandes | |
Nombre | Tamaño |
---|---|
Asia | 16988 |
Africa | 11506 |
North America | 9390 |
South America | 6795 |
Antarctica | 5500 |
Europe | 3745 |
Australia | 2968 |
Greenland | 840 |
New Guinea | 306 |
Borneo | 280 |
Modificación del estilo de letra de la columna nombres
Es posible personalizar aún más el estilo de la tabla y agregarle muchas más cosas usando las funciones de referencia (?sec-funcref).
Un Stub es la parte izquierda de la fila donde se encuentran los nombres de las filas o los nombres de los grupos de filas. El término Stub Head hace referencia al “título” de los stubs de la tabla.
En la librería gt es necesario especificar cuál es la columna que tiene los “nombres” de las filas. En nuestro ejemplo, el tibble islands_tbl tiene DOS columnas, debemos especificar que la columna Nombre tiene los nombres de las filas y a partir de ella formaremos los stubs, y que la columna size es la única columna, esto lo hacemos con la función gt()
y el argumento rowname_col
así
<-
gt_tbl5 |>
islands_tbl gt(rowname_col = "Nombre")
gt_tbl5
Tamaño | |
---|---|
Asia | 16988 |
Africa | 11506 |
North America | 9390 |
South America | 6795 |
Antarctica | 5500 |
Europe | 3745 |
Australia | 2968 |
Greenland | 840 |
New Guinea | 306 |
Borneo | 280 |
Sin embargo, tal como podemos observar en Figura 2.3, la letra de la columna nombres ya no es itálica, de modo que hemos perdido el estilo que dimos en ?fig-italica.Ahora sí podemos formar los grupos de filas y asignar los stubs. Iniciamos con el stub head al que llamaremos “Masa terrestre” con la función tab_stubhead()
así
<-
gt_tbl6 |>
gt_tbl5 tab_stubhead(label = "Masa terrestre")
gt_tbl6
Masa terrestre | Tamaño |
---|---|
Asia | 16988 |
Africa | 11506 |
North America | 9390 |
South America | 6795 |
Antarctica | 5500 |
Europe | 3745 |
Australia | 2968 |
Greenland | 840 |
New Guinea | 306 |
Borneo | 280 |
Tabla con un nombre para los stubs
A continuación, agrupamos las filas y asignamos el correspondiente stub con la función tab_row_group()
<-
gt_tbl7 |>
gt_tbl6 tab_row_group(
label = "Continente",
rows = 1:6
|>
) tab_row_group(
label = "País",
rows = c("Australia", "Greenland")
|>
) tab_row_group(
label = "Subregión",
rows = c("New Guinea", "Borneo")
)
# Visualizamos la tabla
gt_tbl7
Masa terrestre | Tamaño |
---|---|
Subregión | |
New Guinea | 306 |
Borneo | 280 |
País | |
Australia | 2968 |
Greenland | 840 |
Continente | |
Asia | 16988 |
Africa | 11506 |
North America | 9390 |
South America | 6795 |
Antarctica | 5500 |
Europe | 3745 |
Ahora agregamos los otros elementos de la tabla y nos queda
<-
gt_tbl8 |>
gt_tbl7 tab_header(
title = "Grandes masas de tierra del mundo",
subtitle = "Top 10 de las más grandes"
|>
) tab_source_note(
source_note = "Recurso: The World Almanac and Book of Facts, 1975, página 406."
|>
) tab_source_note(
source_note = "Referencia: McNeil, D. R. (1977) Interactive Data Analysis. Wiley."
|>
) tab_footnote(
footnote = "El tamaño es mayor que 6000 y menor que 16000",
locations = cells_body(columns = Tamaño, rows = Tamaño>6000 & Tamaño<16000)
|>
) opt_footnote_marks(marks = c("*", "+"))
# Visualizamos la tabla
gt_tbl8
Grandes masas de tierra del mundo | |
Top 10 de las más grandes | |
Masa terrestre | Tamaño |
---|---|
Subregión | |
New Guinea | 306 |
Borneo | 280 |
País | |
Australia | 2968 |
Greenland | 840 |
Continente | |
Asia | 16988 |
Africa | * 11506 |
North America | * 9390 |
South America | * 6795 |
Antarctica | 5500 |
Europe | 3745 |
Recurso: The World Almanac and Book of Facts, 1975, página 406. | |
Referencia: McNeil, D. R. (1977) Interactive Data Analysis. Wiley. | |
* El tamaño es mayor que 6000 y menor que 16000 |
Otra forma, tal vez un poco más sencilla, para generar los stubs es cuando en la base de datos original existe una columna con los nombres de los grupos de las filas, en el ejemplo, que en islands_tbl existiera la columna nombre_grupos donde aparecen Subregión, Continente y País, de modo que no sería necesario usar la función tab_row_group()
para formar cada grupo, sino que simplemente usaríamos el siguiente fragmento del código: “gt(islands_tbl, rowname_col = "name", groupname_col = "nombre_grupos") |> ...
”.
Así como en la sección anterior hicimos grupos de filas y les pusimos nombres a dichos gurpos, también es posible crear grupos de filas y asignarles títulos utilizando la función tab_spanner()
, dichos grupos se conocen como Spanner.
Para mostrar un ejemplo, usaremos los datos disponibles en airquality
, esta base de datos tiene registro del día, mes y las mediciones de la calidad del aire en Nueva York de 153 días entre Mayo a Septiembre de 1973, tiene variables como ozono, radiación solar, temperatura, entre otras. Para ilustrar el uso de la función tab_stanner()
, vamos a crear dos grupos de columnas, uno asociado a las mediciones (ozono, radiación solar, temperatura, …) y otro relacionado con la fecha de registro.
# Primero vamos a cambiar a español los nombres de las variables de la base de datos "airquality"
<-airquality |>
calidad_aireslice(1:10)
names(calidad_aire)<-c("Ozono","R.Solar","Viento","Temp","Mes","Día")
# Creamos la tabla con gt
<-
gt_tbl_air gt(calidad_aire) |>
tab_header(
title = "Mediciones de la calidad del aire en Nueva York",
subtitle = "Mediciones diarias en Nueva York de mayo a septiembre de 1973"
|>
) # Aquí creamos el primer grupo de columnas refererentes a la fecha
tab_spanner(
label = "Fecha", # Agregamos el título del grupo de columnas
columns = c(Mes, Día) # Seleccionamos las columnas que se van a agrupar en "Fecha"
|>
) tab_spanner(
label = "Mediciones",
columns = c(Ozono, R.Solar, Viento, Temp)
)
# Visualizamos la tabla
gt_tbl_air
Mediciones de la calidad del aire en Nueva York | |||||
Mediciones diarias en Nueva York de mayo a septiembre de 1973 | |||||
Mediciones | Fecha | ||||
---|---|---|---|---|---|
Ozono | R.Solar | Viento | Temp | Mes | Día |
41 | 190 | 7.4 | 67 | 5 | 1 |
36 | 118 | 8.0 | 72 | 5 | 2 |
12 | 149 | 12.6 | 74 | 5 | 3 |
18 | 313 | 11.5 | 62 | 5 | 4 |
NA | NA | 14.3 | 56 | 5 | 5 |
28 | NA | 14.9 | 66 | 5 | 6 |
23 | 299 | 8.6 | 65 | 5 | 7 |
19 | 99 | 13.8 | 59 | 5 | 8 |
8 | 19 | 20.1 | 61 | 5 | 9 |
NA | 194 | 8.6 | 69 | 5 | 10 |
La librería gt
nos permite cambiar de posición la disposición de las columnas, así como también modificar los nombres de las columnas. Para cambiar de posición se puede usar la función cols_move_to_*()
, y para los nombres de las columnas cols_label()
. Por ejemplo, vamos a mover todas las variables relacionadas con Fecha al comiezo de la tabla (a la izquierda), y vamos a agregar las unidades de medida al nombre de las columnas.
<-
gt_tbl_air_2 |>
gt_tbl_air cols_move_to_start(
columns = c(Mes, Día)
|>
) cols_label(
Ozono = html("Ozono,<br>ppbV"),
R.Solar = html("R.Solar,<br>cal/m<sup>2</sup>"),
Viento = html("Viento,<br>mph"),
Temp = html("Temp,<br>°F")
)
# Visualización de la tabla
gt_tbl_air_2
Mediciones de la calidad del aire en Nueva York | |||||
Mediciones diarias en Nueva York de mayo a septiembre de 1973 | |||||
Fecha | Mediciones | ||||
---|---|---|---|---|---|
Mes | Día | Ozono, ppbV |
R.Solar, cal/m2 |
Viento, mph |
Temp, °F |
5 | 1 | 41 | 190 | 7.4 | 67 |
5 | 2 | 36 | 118 | 8.0 | 72 |
5 | 3 | 12 | 149 | 12.6 | 74 |
5 | 4 | 18 | 313 | 11.5 | 62 |
5 | 5 | NA | NA | 14.3 | 56 |
5 | 6 | 28 | NA | 14.9 | 66 |
5 | 7 | 23 | 299 | 8.6 | 65 |
5 | 8 | 19 | 99 | 13.8 | 59 |
5 | 9 | 8 | 19 | 20.1 | 61 |
5 | 10 | NA | 194 | 8.6 | 69 |
Es considerablemente grande la cantidad de cosas que podemos agregar a nuestra tabla. En este capítulo (Capítulo 2) vimos cómo agregar partes “básicas” a la tabla. Pero también podemos agregar muchas más cosas usando las funciones de referencia que puedes estudiar en ?sec-funcref.